package pruabas_tpalgo3;

/**
 * Genera la mezcla intentando tomar una cantidad de combustible
 * del tanque de combustible asociado, es el objecto que permite
 * regular la Fuerza del Motor
 * @author grupo5
 * @version 1
 * @see Componente
 */
public class Carburador extends Componente {

	private TanqueDeCombustible tanqueDeCombustible;
	private double cantCombustEnMezclaAlCienPorCien;
	private double porcentCombustMezcla;
	
	/**
     * Constructor de la clase 
	 * @param vidaUtil la vida util del componente
	 * @param masa la masa del componente
	 * @param precio el precio del componente
	 * @param cantCombustEnMezclaAlCienPorCien 
	 */
	public Carburador(double vidaUtil, double masa, double precio, 
			double cantCombustEnMezclaAlCienPorCien) {
		
		super(TipoComponente.CARBURADOR, vidaUtil, masa, precio);
		
		this.tanqueDeCombustible = null;
		this.cantCombustEnMezclaAlCienPorCien = 
			cantCombustEnMezclaAlCienPorCien;
		
	}
	
	/**
     * Constructor de la clase 
	 * @param vidaUtil la vida util del componente
	 * @param masa la masa del componente
	 * @param precio el precio del componente
	 * @param cantCombustEnMezclaAlCienPorCien 
	 */
	public void setTanqueDeCombustible(TanqueDeCombustible tanque) {
		
		this.tanqueDeCombustible = tanque;
		
	}
	
	/**
     * Permite al acelerador del auto setear el porcent de combustible
	 * @param porcentCombustMezcla porcent requerido de combustible en mezcla
	 * @return procent real de combustible seteado
	 */
	public double setPorcentCombustMezcla(double porcentCombustMezcla) {
		
		if (porcentCombustMezcla < 0) {
			porcentCombustMezcla = 0;
		} else if (porcentCombustMezcla > 100) porcentCombustMezcla = 100;
		this.porcentCombustMezcla = porcentCombustMezcla;
		return porcentCombustMezcla;
		
	}
	
	/**
     * permite que el motor solicite una mezcla (aire y combustible)
	 * @return cant de combustible presente en la mezcla devuelta al motor
	 */
	double obtenerMezcla() {
		
		double combustibleObtenido = 
			this.tanqueDeCombustible.obtenerCombustible(
			this.cantCombustEnMezclaAlCienPorCien * 
			this.porcentCombustMezcla / 100);
		return combustibleObtenido;
		
	}
	
}